﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace BDSim
{
    public class CObsDataGenDLL
    {
        //////////////////////////////////////////////////////////
        //函数名称：ObsRecvInit
        //函数功能：监测站观测数据仿真计算初始化
        //输入：
        //    pObsReceiverInPut：  监测站观测数据仿真计算输入参数信息
        //                    CurTime观测值生成时刻(UTC:年月日时分秒)
        //                    SatID卫星编号,
        //                    SatOrbFlag轨道标识符(0:ECI_pos 1:ECI_(pos+vel)
        //                    StaID测站编号
        //                    ReceiverPos接收机位置（惯性系）
        //                    freq频率点(单位：MHz）
        //                    SatOrb[]卫星10个点轨道信息(时间点以UTCJD输入)
        //                    DeltRanThH[]噪声量级， DeltRanThH[0]为伪距噪声量级， DeltRanThH[1]位载波相位噪声量级
        //                    ObsErr[]观测误差，ObsDelay[0]为伪距误差，ObsDelay[1]位载波相位误差,以米为单位

        //输出：
        //    pObsReceiverOutput： 接收机对单颗卫星的观测值输出
        //                    CurTime观测值生成时刻(UTC:年月日时分秒)
        //                    ReceiverID接收机编号
        //                    SatID卫星编号

        //                    SatObs(结构体形式)：对该可见卫星的观测数据(伪距，载波，多普勒频移，伪距一阶变率)(单位：m)
        //                    SatPV(结构体形式)：观测值生成时刻卫星轨道信息

        //返回值：int  0:观测值生成时刻在10个卫星轨道点的时间区间（不含边界）之外   1：正常
        /////////////////////////////////////////////////////////
        [DllImport("CObsDataGenDLL.dll", EntryPoint = "ObsRecvInit", CallingConvention = CallingConvention.Cdecl)]
        public static extern int ObsRecvInit(ObsReceiverInPut pObsReceiverInPut, out ObsReceiverOutput pObsReceiverOutput);


        //////////////////////////////////////////////////////////
        //函数名称：ObsRecvOutput
        //函数功能：监测站观测数据仿真计算
        //输入：
        //    pObsReceiverInPut：  监测站观测数据仿真计算输入参数信息
        //                    CurTime观测值生成时刻(UTC:年月日时分秒)
        //                    SatID卫星编号,
        //                    SatOrbFlag轨道标识符(0:ECI_pos 1:ECI_(pos+vel)
        //                    StaID测站编号
        //                    ReceiverPos接收机位置（惯性）
        //                    freq频率点(单位：MHz）
        //                    SatOrb[]卫星10个点轨道信息(时间点以UTCJD输入)
        //                    DeltRanThH[]噪声量级， DeltRanThH[0]为伪距噪声量级， DeltRanThH[1]位载波相位噪声量级
        //                    ObsErr[]观测误差，ObsDelay[0]为伪距误差，ObsDelay[1]位载波相位误差,以米为单位

        //输出：
        //    pObsReceiverOutput： 接收机对单颗卫星的观测值输出
        //                    CurTime观测值生成时刻(UTC:年月日时分秒)
        //                    ReceiverID接收机编号
        //                    SatID卫星编号

        //                    SatObs(结构体形式)：对该可见卫星的观测数据(伪距，载波，多普勒频移，伪距一阶变率)(单位：m)
        //                    SatPV(结构体形式)：观测值生成时刻卫星轨道信息

        //返回值：int  0:观测值生成时刻在10个卫星轨道点的时间区间（不含边界）之外   1：正常
        /////////////////////////////////////////////////////////
        [DllImport("CObsDataGenDLL.dll", EntryPoint = "ObsRecvOutput", CallingConvention = CallingConvention.Cdecl)]
        public static extern int ObsRecvOutput(ObsReceiverInPut pObsReceiverInPut, out ObsReceiverOutput pObsReceiverOutput);


    }
}
